<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 传统JS语法表示数字的两个问题
    // 1. 超出2^53的数字, 无法精准表示
    // 2. 超出2^1024的数字, 无法表示  => Infinity

    // console.log(Math.pow(2,53));
    // console.log(Math.pow(2,53)+1);
    // console.log(Math.pow(2,53)+2);
    // console.log(Math.pow(2,53)+3);

    // console.log(2**53);
    // console.log(2**53+1);
    // console.log(2**53+2);
    // console.log(2**53+3);
    
    // console.log(Math.pow(2,1024)+1);


    // ** 运算符  => es6新增
    // m**n    m^n     

    // BigInt 数据类型  (解决传统JS的数字表示问题)
    // ES2020 引入了一种新的数据类型 BigInt（大整数），来解决这个问题，这是 ECMAScript 的第八种数据类型。BigInt 只用来表示整数，没有位数的限制，任何位数的整数都可以精确表示。

    // 1. 超出2^53的数字, 可以精准表示
    // 2. 超出2^1024的数字, 可以表示  

    // 如何创建bigInt数据
    // 1. 为了与 Number 类型区别，BigInt 类型的数据必须添加后缀n。
    // 2. 使用BigInt()方法 将其他类型转化为大整数类型(先转化数字,在转大整数)
    // var a = 2n;
    // var b = BigInt(53); // 53n
    // console.log(a);
    // console.log(b);

    // Math.pow() 不支持bigInt运算
    // console.log(Math.pow(2n,53n));

    // console.log(2n**53n);
    // console.log(2n**53n + 1n);
    // console.log(2n**53n + 2n);
    // console.log(2n**53n + 3n);
    // console.log(2n**53n + 4n);
    
    // console.log(2n**1024n-1n);
    // console.log(2n**1024n);
    // console.log(2n**1024n+1n);
    // console.log(2n**1024n*2n);

    // document.write(2n**1024n)

    // Bigint 转 数字/字符串
    // console.log(Number(2n));
    // console.log(String(2n));
    // console.log(Boolean(2n));



</script>
</html>